//using Microsoft.AspNetCore.Mvc;
//using Microsoft.AspNetCore.Authorization;
//using EIMS.Data;
//using EIMS.Models.ViewModels;
//using System.Linq;
//using Microsoft.EntityFrameworkCore;
//using System;
//using System.Collections.Generic;
//using System.IO;
//using OfficeOpenXml;
//using OfficeOpenXml.Style;
//using System.Drawing;
//using EIMS.Models;
//using System.Threading.Tasks;

//namespace EIMS.Controllers
//{
//    [Authorize]
//    public class ReportController : Controller
//    {
//        private readonly ApplicationDbContext _context;

//        public ReportController(ApplicationDbContext context)
//        {
//            _context = context;
//        }

//        // 报表中心首页
//        public IActionResult Index()
//        {
//            // 获取基本统计信息
//            ViewBag.CustomerCount = _context.Customers.Count();
//            ViewBag.SupplierCount = _context.Suppliers.Count();
//            ViewBag.EmployeeCount = _context.Employees.Count();
            
//            // 近7天新增客户数
//            var lastWeekCustomers = _context.Customers
//                .Where(c => c.CreatedAt >= DateTime.Now.AddDays(-7))
//                .Count();
//            ViewBag.NewCustomersCount = lastWeekCustomers;

//            return View();
//        }

//        // 客户统计报表
//        public IActionResult CustomerReport()
//        {
//            var viewModel = new CustomerReportViewModel
//            {
//                // 按类型统计客户数量
//                CustomersByType = _context.Customers
//                    .GroupBy(c => c.Type)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key.ToString(),
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 按信用等级统计客户数量
//                CustomersByCreditRating = _context.Customers
//                    .GroupBy(c => c.CreditRating)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key.ToString(),
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 按所在地区统计客户数量
//                CustomersByRegion = _context.Customers
//                    .GroupBy(c => c.Region)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = string.IsNullOrEmpty(g.Key) ? "未知" : g.Key,
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 最近添加的客户
//                RecentCustomers = _context.Customers
//                    .OrderByDescending(c => c.CreatedAt)
//                    .Take(10)
//                    .Select(c => new CustomerListItemViewModel
//                    {
//                        Id = c.Id,
//                        Name = c.Name,
//                        ContactPerson = c.ContactPerson,
//                        ContactPhone = c.ContactPhone,
//                        Email = c.Email,
//                        Type = c.Type,
//                        CreditRating = c.CreditRating,
//                        Status = c.Status,
//                        CreatedAt = c.CreatedAt
//                    })
//                    .ToList()
//            };

//            return View(viewModel);
//        }

//        // 供应商统计报表
//        public IActionResult SupplierReport()
//        {
//            var viewModel = new SupplierReportViewModel
//            {
//                // 按类型统计供应商数量
//                SuppliersByType = _context.Suppliers
//                    .GroupBy(s => s.Type)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key.ToString(),
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 按信用等级统计供应商数量
//                SuppliersByCreditRating = _context.Suppliers
//                    .GroupBy(s => s.CreditRating)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key.ToString(),
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 按所在地区统计供应商数量
//                SuppliersByRegion = _context.Suppliers
//                    .GroupBy(s => s.Region)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = string.IsNullOrEmpty(s.Key) ? "未知" : s.Key,
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 最近添加的供应商
//                RecentSuppliers = _context.Suppliers
//                    .OrderByDescending(s => s.CreatedAt)
//                    .Take(10)
//                    .Select(s => new SupplierListItemViewModel
//                    {
//                        Id = s.Id,
//                        Name = s.Name,
//                        ContactPerson = s.ContactPerson,
//                        ContactPhone = s.ContactPhone,
//                        Email = s.Email,
//                        Type = s.Type,
//                        CreditRating = s.CreditRating,
//                        Status = s.Status,
//                        CreatedAt = s.CreatedAt
//                    })
//                    .ToList()
//            };

//            return View(viewModel);
//        }

//        // 员工统计报表
//        public IActionResult EmployeeReport()
//        {
//            var viewModel = new EmployeeReportViewModel
//            {
//                // 按部门统计员工人数
//                EmployeesByDepartment = _context.Employees
//                    .GroupBy(e => e.Department.Name)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key,
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 按职位统计员工人数
//                EmployeesByPosition = _context.Employees
//                    .GroupBy(e => e.Position)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = string.IsNullOrEmpty(g.Key) ? "未设置" : g.Key,
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 按状态统计员工人数
//                EmployeesByStatus = _context.Employees
//                    .GroupBy(e => e.Status)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key.ToString(),
//                        Value = g.Count()
//                    })
//                    .ToList(),
                
//                // 员工入职统计（按月）
//                EmployeesByJoinMonth = _context.Employees
//                    .Where(e => e.JoinDate.Year == DateTime.Now.Year)
//                    .GroupBy(e => e.JoinDate.Month)
//                    .Select(g => new ChartDataItem
//                    {
//                        Label = g.Key.ToString() + "月",
//                        Value = g.Count()
//                    })
//                    .OrderBy(i => int.Parse(i.Label.Replace("月", "")))
//                    .ToList()
//            };

//            return View(viewModel);
//        }

//        // 导出客户报表到Excel
//        [HttpGet]
//        public IActionResult ExportCustomers()
//        {
//            // 获取所有客户数据
//            var customers = _context.Customers
//                .Select(c => new
//                {
//                    c.Id,
//                    c.Code,
//                    c.Name,
//                    c.ContactPerson,
//                    c.ContactPhone,
//                    c.Email,
//                    c.Region,
//                    c.Address,
//                    Type = c.Type.ToString(),
//                    CreditRating = c.CreditRating.ToString(),
//                    Status = c.Status.ToString(),
//                    c.CreatedAt
//                })
//                .ToList();

//            using (var package = new ExcelPackage())
//            {
//                var worksheet = package.Workbook.Worksheets.Add("客户报表");

//                // 设置表头样式
//                using (var range = worksheet.Cells["A1:L1"])
//                {
//                    range.Style.Font.Bold = true;
//                    range.Style.Fill.PatternType = ExcelFillStyle.Solid;
//                    range.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
//                    range.Style.Font.Color.SetColor(Color.Black);
//                }

//                // 添加表头
//                worksheet.Cells[1, 1].Value = "客户ID";
//                worksheet.Cells[1, 2].Value = "客户编号";
//                worksheet.Cells[1, 3].Value = "客户名称";
//                worksheet.Cells[1, 4].Value = "联系人";
//                worksheet.Cells[1, 5].Value = "联系电话";
//                worksheet.Cells[1, 6].Value = "电子邮箱";
//                worksheet.Cells[1, 7].Value = "所在地区";
//                worksheet.Cells[1, 8].Value = "详细地址";
//                worksheet.Cells[1, 9].Value = "客户类型";
//                worksheet.Cells[1, 10].Value = "信用等级";
//                worksheet.Cells[1, 11].Value = "客户状态";
//                worksheet.Cells[1, 12].Value = "创建时间";

//                // 添加数据
//                int row = 2;
//                foreach (var customer in customers)
//                {
//                    worksheet.Cells[row, 1].Value = customer.Id;
//                    worksheet.Cells[row, 2].Value = customer.Code;
//                    worksheet.Cells[row, 3].Value = customer.Name;
//                    worksheet.Cells[row, 4].Value = customer.ContactPerson;
//                    worksheet.Cells[row, 5].Value = customer.ContactPhone;
//                    worksheet.Cells[row, 6].Value = customer.Email;
//                    worksheet.Cells[row, 7].Value = customer.Region;
//                    worksheet.Cells[row, 8].Value = customer.Address;
//                    worksheet.Cells[row, 9].Value = customer.Type;
//                    worksheet.Cells[row, 10].Value = customer.CreditRating;
//                    worksheet.Cells[row, 11].Value = customer.Status;
//                    worksheet.Cells[row, 12].Value = customer.CreatedAt.ToString("yyyy-MM-dd HH:mm:ss");
//                    row++;
//                }

//                // 自动调整列宽
//                worksheet.Cells.AutoFitColumns();

//                var stream = new MemoryStream();
//                package.SaveAs(stream);
//                stream.Position = 0;

//                // 设置文件名
//                string fileName = $"客户报表_{DateTime.Now:yyyyMMdd}.xlsx";

//                return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
//            }
//        }

//        // 导出供应商报表到Excel
//        [HttpGet]
//        public IActionResult ExportSuppliers()
//        {
//            // 获取所有供应商数据
//            var suppliers = _context.Suppliers
//                .Select(s => new
//                {
//                    s.Id,
//                    s.Code,
//                    s.Name,
//                    s.ContactPerson,
//                    s.ContactPhone,
//                    s.Email,
//                    s.Region,
//                    s.Address,
//                    Type = s.Type.ToString(),
//                    CreditRating = s.CreditRating.ToString(),
//                    Status = s.Status.ToString(),
//                    s.CreatedAt
//                })
//                .ToList();

//            using (var package = new ExcelPackage())
//            {
//                var worksheet = package.Workbook.Worksheets.Add("供应商报表");

//                // 设置表头样式
//                using (var range = worksheet.Cells["A1:L1"])
//                {
//                    range.Style.Font.Bold = true;
//                    range.Style.Fill.PatternType = ExcelFillStyle.Solid;
//                    range.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
//                    range.Style.Font.Color.SetColor(Color.Black);
//                }

//                // 添加表头
//                worksheet.Cells[1, 1].Value = "供应商ID";
//                worksheet.Cells[1, 2].Value = "供应商编号";
//                worksheet.Cells[1, 3].Value = "供应商名称";
//                worksheet.Cells[1, 4].Value = "联系人";
//                worksheet.Cells[1, 5].Value = "联系电话";
//                worksheet.Cells[1, 6].Value = "电子邮箱";
//                worksheet.Cells[1, 7].Value = "所在地区";
//                worksheet.Cells[1, 8].Value = "详细地址";
//                worksheet.Cells[1, 9].Value = "供应商类型";
//                worksheet.Cells[1, 10].Value = "信用等级";
//                worksheet.Cells[1, 11].Value = "供应商状态";
//                worksheet.Cells[1, 12].Value = "创建时间";

//                // 添加数据
//                int row = 2;
//                foreach (var supplier in suppliers)
//                {
//                    worksheet.Cells[row, 1].Value = supplier.Id;
//                    worksheet.Cells[row, 2].Value = supplier.Code;
//                    worksheet.Cells[row, 3].Value = supplier.Name;
//                    worksheet.Cells[row, 4].Value = supplier.ContactPerson;
//                    worksheet.Cells[row, 5].Value = supplier.ContactPhone;
//                    worksheet.Cells[row, 6].Value = supplier.Email;
//                    worksheet.Cells[row, 7].Value = supplier.Region;
//                    worksheet.Cells[row, 8].Value = supplier.Address;
//                    worksheet.Cells[row, 9].Value = supplier.Type;
//                    worksheet.Cells[row, 10].Value = supplier.CreditRating;
//                    worksheet.Cells[row, 11].Value = supplier.Status;
//                    worksheet.Cells[row, 12].Value = supplier.CreatedAt.ToString("yyyy-MM-dd HH:mm:ss");
//                    row++;
//                }

//                // 自动调整列宽
//                worksheet.Cells.AutoFitColumns();

//                var stream = new MemoryStream();
//                package.SaveAs(stream);
//                stream.Position = 0;

//                // 设置文件名
//                string fileName = $"供应商报表_{DateTime.Now:yyyyMMdd}.xlsx";

//                return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
//            }
//        }

//        // 导出员工报表到Excel
//        [HttpGet]
//        public IActionResult ExportEmployees()
//        {
//            // 获取所有员工数据
//            var employees = _context.Employees
//                .Include(e => e.Department)
//                .Select(e => new
//                {
//                    e.Id,
//                    e.EmployeeNumber,
//                    e.Name,
//                    e.Gender,
//                    e.IdCard,
//                    e.Mobile,
//                    e.Email,
//                    Department = e.Department.Name,
//                    Position = e.Position ?? "未设置",
//                    Status = e.Status.ToString(),
//                    JoinDate = e.HireDate,
//                    e.TerminationDate,
//                    e.CreatedAt
//                })
//                .ToList();

//            using (var package = new ExcelPackage())
//            {
//                var worksheet = package.Workbook.Worksheets.Add("员工报表");

//                // 设置表头样式
//                using (var range = worksheet.Cells["A1:M1"])
//                {
//                    range.Style.Font.Bold = true;
//                    range.Style.Fill.PatternType = ExcelFillStyle.Solid;
//                    range.Style.Fill.BackgroundColor.SetColor(Color.LightGray);
//                    range.Style.Font.Color.SetColor(Color.Black);
//                }

//                // 添加表头
//                worksheet.Cells[1, 1].Value = "员工ID";
//                worksheet.Cells[1, 2].Value = "工号";
//                worksheet.Cells[1, 3].Value = "姓名";
//                worksheet.Cells[1, 4].Value = "性别";
//                worksheet.Cells[1, 5].Value = "身份证号";
//                worksheet.Cells[1, 6].Value = "手机号";
//                worksheet.Cells[1, 7].Value = "电子邮箱";
//                worksheet.Cells[1, 8].Value = "所属部门";
//                worksheet.Cells[1, 9].Value = "职位";
//                worksheet.Cells[1, 10].Value = "状态";
//                worksheet.Cells[1, 11].Value = "入职日期";
//                worksheet.Cells[1, 12].Value = "离职日期";
//                worksheet.Cells[1, 13].Value = "创建时间";

//                // 添加数据
//                int row = 2;
//                foreach (var employee in employees)
//                {
//                    worksheet.Cells[row, 1].Value = employee.Id;
//                    worksheet.Cells[row, 2].Value = employee.EmployeeNumber;
//                    worksheet.Cells[row, 3].Value = employee.Name;
//                    worksheet.Cells[row, 4].Value = employee.Gender;
//                    worksheet.Cells[row, 5].Value = employee.IdCard;
//                    worksheet.Cells[row, 6].Value = employee.Mobile;
//                    worksheet.Cells[row, 7].Value = employee.Email;
//                    worksheet.Cells[row, 8].Value = employee.Department;
//                    worksheet.Cells[row, 9].Value = employee.Position;
//                    worksheet.Cells[row, 10].Value = employee.Status;
//                    worksheet.Cells[row, 11].Value = employee.JoinDate.ToString("yyyy-MM-dd");
//                    worksheet.Cells[row, 12].Value = employee.TerminationDate.HasValue ? employee.TerminationDate.Value.ToString("yyyy-MM-dd") : "";
//                    worksheet.Cells[row, 13].Value = employee.CreatedAt.ToString("yyyy-MM-dd HH:mm:ss");
//                    row++;
//                }

//                // 自动调整列宽
//                worksheet.Cells.AutoFitColumns();

//                var stream = new MemoryStream();
//                package.SaveAs(stream);
//                stream.Position = 0;

//                // 设置文件名
//                string fileName = $"员工报表_{DateTime.Now:yyyyMMdd}.xlsx";

//                return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
//            }
//        }
//    }
//} 